package com.bruce.asurada.sso.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * JWT配置属性类
 * 
 * @author Bruce
 */
@Data
@Component
@ConfigurationProperties(prefix = "jwt")
public class JwtProperties {

    /**
     * JWT签名密钥
     */
    private String secret = "asurada-sso-secret-key-2024";

    /**
     * 访问令牌过期时间（毫秒）
     * 默认30分钟
     */
    private Long expiration = 1800000L;

    /**
     * 刷新令牌过期时间（毫秒）
     * 默认7天
     */
    private Long refreshExpiration = 604800000L;


    /**
     * IM会话令牌过期时间（毫秒）
     * 默认7天
     */
    private Long imSessionExpriation = 604800000L ;

    /**
     * IM访问令牌过期时间（毫秒）
     * 默认30分钟
     */
    private Long imAccessExpriation = 1800000L ;

    /**
     * 获取访问令牌过期时间（秒）
     */
    public Long getExpirationInSeconds() {
        return expiration / 1000;
    }

    /**
     * 获取刷新令牌过期时间（秒）
     */
    public Long getRefreshExpirationInSeconds() {
        return refreshExpiration / 1000;
    }

    /**
     * 获取访问令牌过期时间（分钟）
     */
    public Long getExpirationInMinutes() {
        return expiration / (1000 * 60);
    }

    /**
     * 获取刷新令牌过期时间（天）
     */
    public Long getRefreshExpirationInDays() {
        return refreshExpiration / (1000 * 60 * 60 * 24);
    }
}